آموزش برنامه نویسی در ویژوال بیسیک
اموزش مقدماتی کامل برای مبتدیان

http://www.schoolnet.ir/tutorial/vb/

اشاره : 
يك بازي كامپيوتري را روي كامپيوترتان اجرا مي‌كنيد. فعلا‌ً كارت گرافيك شما روي اسلا‌تAGP سوار مي‌شود، پردازشگر سلرون داريد و ... پس از چند ماه يا چند سال كامپيوتر جديدي مي‌خريد. اكنون اسلا‌ت كارت گرافيكي شما PCI Express است و يك پردازشگر 64 بيتي داريد. همان بازي را روي اين كامپيوتر هم نصب و اجرامي‌كنيد! شايد به نظر طبيعي ميآيد كه همه چيز بايد همين‌طور باشد. اما چگونه يك بازي روي كامپيوترهايي با تراشه‌ها و سخت‌افزارهاي مختلف و گاه فناوري متفاوت اجرا مي‌شود؟ API‌هاي گرافيكي يا همان رابط‌هاي برنامه‌نويسي، بخش بزرگي از اين مشكل را حل مي‌كنند و امكانات گسترده ديگري را نيز در اختيار برنامه‌نويسان و توسعه‌دهندگان بازي و برنامه‌هاي چندرسانه‌اي قرارمي‌دهند. OpenGL وDirectX، دو مجموعه API گرافيكي و صوتي هستند كه براي آسان‌تر ساختن توسعه بازي‌ها و نرم‌افزارهاي چندرسانه‌اي طراحي شده‌اند. 

API گرافيكي چيست؟ 
API درواقع بين برنامه و سخت‌افزاري كه برنامه روي آن اجرا مي‌شود، نقش يك هماهنگ‌كننده را دارد و مانند پلي ميان سخت‌افزار و نرم‌افزار ارتباط ايجاد‌مي‌كند. يعني برنامه‌نويس كدهايي مي‌نويسد كه داده‌هاي گرافيكي خود را به وسيله دستورهاي استانداردي به درايور API مي‌فرستد نه مستقيماً به خود سخت‌افزار. سپس درايوري كه شركت سازنده سخت‌افزار توليد‌كرده است، اين كداستاندارد توليدشده را به فرمت بومي و ويژه‌اي كه براي آن مدل خاص سخت‌افزار قابل شناسايي است، ترجمه مي‌كند. 

Microsoft DirectX 
شركت مايكروسافت در سال 1995 DirectX را ساخته و توسعه داده‌است. اين نرم‌افزار شامل مجموعه‌ يكپارچه‌اي از ابزارهاي برنامه‌نويسي است كه به توسعه‌دهندگان امكان مي‌دهد انواع مختلف نرم‌افزارهاي مالتي‌مديا را روي پلتفرم ويندوز توليد كنند. DirectX به برنامه‌اي كه بر پايه آن طراحي شده امكان مي‌دهد به آساني قابليت‌هاي سخت‌افزار كامپيوتر را شناسايي كند و پارامترهاي برنامه را با آن هماهنگ سازد. 

DirectX شامل APIهايي است كه دسترسي به بخش‌هاي ويژه‌اي از سخت‌افزار مانند تراشه‌هاي شتاب‌دهنده گرافيك سه‌بعدي و كارت صوتي را ميسرمي‌كند. اين APIها كنترل توابع سطح پايين، يعني نزديك به سخت‌افزار، شامل شتاب‌دهنده گرافيكي دو بعدي، پشتيباني از دستگاه‌هاي ورودي مانند دسته بازي، صفحه‌كليد و ماوس، و كنترل ميكس و خروجي صدا را انجام مي‌دهند. 

DirectX 7.0 در سال 1999 با شش كامپوننت عرضه شد كه عبارت بودند از: Direct3D،DirectDraw ،DirectSound ،DirectPlay ،DirectInput و DirectMusic.

در اواخر سال 2000 ميلا‌دي، DirectX 8.0 عرضه شد كه در آن كامپوننت‌هاي DirectSound و DirectMusic با هم ادغام شدند و با نام كامپوننت Direct Audio معرفي شدند. 

Direct3D و DirectDraw نيز با هم ادغام شدند و يك كامپوننت با نام DirectX Graphics را ساختند. DirectShow نيز به صورت يك API جداگانه پياده‌سازي شد و به يكي از كامپوننت‌هاي DirectX تبديل گرديد. 

DirectX 9.0 در ژانويه سال 2003 عرضه شد. ويژگي‌هاي خاص اين نسخه عبارتند از: 

- قابليت‌هاي صوتي جديد در DirectSound 
- سخت‌افزار رندركننده ويديويي با شتاب بيشتر 
- بهبود قابليت برنامه‌ريزي گرافيكي 

APIهاي همه كامپوننت‌هاي DirectX برپايه COM يا Component Object Model هستند. در ادامه به بررسي هفت كامپوننت DirectX 9.0 مي‌پردازيم كه عبارتند از: DirectDraw ،Direct3D ،DirectShow ،DirectSound ،DirectMusic ،DirectInput و DirectPlay.

1- DirectDraw
DirectDraw، كامپوننتي ويژه طراحي دوبعدي است كه به برنامه‌نويس اجازه مي‌دهد مستقيماً به حافظه كارت گرافيك دسترسي يابد، صحنه‌ها و فريم‌ها را با هم تركيب نمايد يا bitmapها را در آنجا ذخيره كند. همچنين، براي برنامه‌ها امكان دسترسي به سخت‌افزارهاي ويژه نمايش را مستقل از نوع سخت‌افزار فراهم مي‌كند. 
هر برنامه كاربردي DirectDraw الگوي يكساني دارد كه عبارت است از: 

- ايجاد يك شي 
- شروع حلقه 
- انتقال به مانتيور 
- پايان حلقه 
- پاك كردن آن شي‌

منظور از واژه <يك شي> مي‌تواند هر تصوير دوبعدي‌اي باشد و منظور از حلقه، حلقه‌اي است كه در برنامه‌نويسي هنگام تكرار منظم دسته‌اي از داده‌ها يا دستورها به كار مي‌بريم. تصوير ايجاد‌شده پس از مدتي پاك مي‌شود و جاي خود را به تصوير ديگري مي‌دهد. 

2- Direct3D 
اين كامپوننت، دسترسي به توابع رندركننده گرافيك سه‌بعدي تعبيه شده در بيشتر كارت‌هاي گرافيك را فراهم مي‌كند. Direct3D يك API سطح پايين سه‌بعدي است كه به نرم‌افزار امكان مي‌دهد مستقل از سخت‌افزار، با سخت‌افزار شتاب‌دهنده ارتباط برقرار كند. لا‌يه‌اي كه براي توسعه‌دهندگان بازي و گرافيك كامپيوتري امكان طراحي و ساخت بازي‌ها را مستقل از سخت‌افزار كامپيوترها فراهم مي‌كند، لا‌يه‌اي به نام
Hardware Abstraction Layer) HAL) است.

HAL با قابليت‌هايي كه به صورت گسترده در سخت‌افزارهاي گرافيك سه‌بعدي پياده‌سازي شده‌اند ارتباط ايجاد مي‌كند و به سازندگان امكان‌مي‌دهد درايورهايي را توليد كنند كه لا‌يه HAL را به سخت‌افزار پيوند دهد. اين كار باعث مي‌شود برنامه‌هاي كاربردي Direct 3D بدون اين‌كه براي نوع خاصي از قطعه سخت‌افزاري نوشته شده باشد، از ويژگي‌هاي بخش‌هاي خاص آن قطعه سخت‌افزاري بهره‌ببرد. در شكل يك چگونگي ارتباط لا‌يه HAL با سخت‌افزار و نرم‌افزارهاي مرتبط نشان داده شده است. 

شكل - چگونگي ارتباط لا‌يه HAL با كارت گرافيك و نرم‌افزارهاي مرتبط
http://www.shabakeh-mag.com/Data/Gallery/s63_gpl_1_s.jpg

همان‌گونه كه در شكل يك، نشان داده شده، نرم‌افزار بازي بالا‌ترين سطح است و پس از آن كامپوننت‌هاي ترسيم دوبعدي و سه بعدي، يعني DirectDraw و Direct3D قرار دارند. لا‌يه HAL يك رابط ميان كامپوننت‌هاي DirectX و كارت گرافيك است. 

در سيستم رندر Direct3D، ساختار اشياي سه‌بعدي پيش از آن‌كه شتاب‌دهنده سه‌بعدي، يك صحنه سه‌بعدي را رندر نمايد و آن را به مانيتور منتقل كند، به وسيله CPU پردازش مي‌شود. نسخه ششم كامپوننت Direct3D از قابليت‌هاي كارت‌هاي گرافيك جديدتر پشتيباني مي‌نمايد و در هر گذر، چندين بافت را با هم رندر مي‌كند. 

كاهش زمان رندر به استفاده از نقشه بافت‌ها نياز دارد. اين نسخه تكنيك‌هايي براي افزودن جلوه‌اي واقعي‌تر به صحنه‌هاي سه بعدي را نيز دربردارد.

مانند anistropic filtering كه عنصر عمق را به trilinear filtering و نقشه برجسته‌سازي مي‌افزايد كه موجب ايجاد شباهت بيشتر بافت‌ها و نيز منابع نور تابيده شده بر سطوح مسطح با نمونه‌هاي واقعي آن‌ها مي‌شود. 

نسخه هفتم DirectX نسبت به نسخه‌هاي پيش از خود بيست درصد سريع‌تر و شامل چند ويژگي ديگر بود. مهم‌ترين آن‌ها پشتيباني از تغييرات شتاب سخت‌افزاري و نوردهي (T&L) به وسيله اغلب كارت‌هاي گرافيك سه‌بعدي آن‌زمان به ويژه كارت‌هايي است كه برپايه تراشه‌هاي nVidia Geforce 256 و S3 Savage 2000 ساخته شده‌اند. از زماني كه T&L عرضه شد، وقت‌گيرترين وظيفه CPU هنگام اجراي بازي‌هاي پيشرفته به شتاب‌دهنده سه‌بعدي داده شد و بخش بزرگي از ظرفيت پردازنده اصلي به كارهاي ديگر مانند هوش‌مصنوعي بازي اختصاص داده شد و توسعه‌دهندگان بازي توانستند رندر را با جزئيات بيشتر انجام دهند و جلوه‌هاي ويژه پيچيده‌تري را در بازي‌ها به‌كار ببرند.

3- DirectShow
اين كامپوننت از بسياري از فرمت‌هاي صوتي و ويديويي شامل AVI ،MPEG ،ASF ،WMA/WMV ،DV و MP3 و DirectX پشتيباني مي‌كند و روي ويندوزهاي 98، 2000، اكس‌پي و نرم‌افزار اينترنت اكسپلورر عرضه شده است.DirectShow پروسه كارهاي مالتي‌مديا مانند نمايش فايل ويديويي را به مجموعه‌اي از مراحل كه با نام
filter شناخته مي‌شوند تقسيم مي‌كند.

فيلترها تعدادي pin ورودي و خروجي دارند كه آن‌ها را به هم متصل مي‌كند. طراحي كلي سازوكار اتصال به اين صورت است كه فيلترها مي‌توانند به روش‌هاي مختلف به هم متصل شوند كه هر نوع از اين اتصال‌ها به معني انجام دادن يك كار است و توسعه‌دهندگان نرم‌افزار مي‌توانند افكت‌هاي خود يا فيلترهاي ديگري را به بخشي از اين گراف براي انجام كار ويژه‌اي بيفزايند. گراف فيلتر DirectShow به صورت گسترده در ضبط صدا و فيلم، و ويرايش آن‌ها به كار مي‌رود. 

شكل - يك گراف فيلتر كه كار نمايش يك فايل MPEG را نشان مي‌دهد. 

در شكل دو، يك گراف نمايش براي فايل فيلمي از نوع MPEG نشان داده شده است. برنامه‌هاي كاربردي DirectShow، براي پردازش داده‌هاي مالتي‌مديا، از اين گراف استفاده مي‌كنند.

داده‌هاي چند رسانه‌اي در اين گراف (در حالي كه كارها به وسيله برنامه كاربردي كنترل مي‌شوند) از فايل منبع به سمت مقصد كه مي‌تواند يك قطعه سخت‌افزاري باشد حركت مي‌كنند. 

ولي در برخي مواقع، برنامه كاربردي علا‌وه بر كنترل گراف، دريافت‌كننده يا فرستنده داده نيز هست. 

هر گره اين گراف، همانگونه كه گفته شد، يك فيلتر است و كار ويژه خود را انجام مي‌دهد. فيلتر source، داده‌ها را از يك فايل يا URL مي‌خواند. فيلتر Parser، بخش‌هايي از داده‌هاي صوتي و ويديويي را به رمزگشاي مناسب مي‌فرستد. رمزگشاها، داده‌هاي صوتي و ويديويي را رمزگشايي مي‌نمايند يا از حالت فشردگي خارج مي‌كنند. 
فيلتر رندركننده، داده‌هاي دريافت شده صوتي و ويديويي از رمزگشا را پخش مي‌كند يا آن‌ها را نمايش مي‌دهد. 

4- DirectSound 
اين كامپوننت همزمان با ساخت ويندوز 95، زماني كه درايورهاي صوتي از نوع VXD بودند به DirectX افزوده شد. در اين كامپوننت APIهاي ويژه‌اي ايجاد شد كه نويسندگان درايورهاي صوتي مي‌بايست آن‌ها را به محصولا‌ت خود، كه فرمت VXD داشت، مي‌افزودند تا به درستي با DirectSound كار كند. 

برنامه‌هاي چندرسانه‌اي با اين كامپوننت به سخت‌افزارهاي صوتي مانند كارت صوتي دسترسي پيدامي‌كنند. از مهم‌ترين ويژگي‌هاي اين API، تركيب صدا و كنترل سطح آن است. 

DirectSound همچنين اجازه مي‌دهد چندين برنامه كاربردي، بدون پيش آوردن وقفه، همزمان به كارت صوتي دسترسي داشته باشند. ايجاد افكت‌هاي صوتي از ديگر توانايي‌هاي DirectSound است. پس از سال‌ها توسعه، اكنون DirectSound يك API پخته و كامل است و بسياري قابليت‌هاي ديگر را نيز فراهم مي‌كند؛ مانند قابليت پخش صداهاي چند كاناله با وضوح و دقت بالا‌.

5- DirectMusic 
تاكنون بازي‌هايي را تجربه كرده‌ايد كه در تمام مدت يك مرحله، موسيقي يكنواخت و ثابتي دارند؟ بازي‌اي را در نظر بگيريد كه برنامه‌نويسان آن مي‌خواهند يك آهنگ، در تمام مدت، در يك مرحله از آن به صدا دربيايد. با استفاده از برنامه DirectMusic Producer، آن‌ها مي‌توانند در آن مرحله براي آهنگ، يك درجه در نظر بگيرند.

اين درجه مي‌تواند بسته به نوع عملكرد شخصيت بازي، تغيير كند. اگر شخصيت بازي در حال راه رفتن است، آهنگ آرام و هنگامي كه با دشمن خود مبارزه مي‌كند، آهنگ تندتر مي‌شود و يا نوع آهنگ تغيير مي‌كند و هنگامي كه مبارزه تمام مي‌شود، آهنگ دوباره آرام مي‌شود. اين تغييرها بدون ايجاد وقفه، به صورت پويا و بدون دخالت كاربر انجام مي‌شود. چون براساس DirecMusic، آهنگ به صورت شناور و بدون وقفه با نواختن وارياسيون‌هاي مختلف با قابليت واكنش به رويدادهاي بازي توليد مي‌شود. 

DirectMusic، با داده‌هاي موسيقي براساس پيام‌هاي حاوي اطلا‌عات كار مي‌كند. يك آهنگ مي‌تواند در داخل سخت‌افزار و با نرم‌افزارهاي آهنگ‌ساز مانند Microsoft ‌Synthesizer ساخته شود. DirectMusic از استانداردهايMIDI و DLS پشتيباني مي‌كند. 

6- DirectInput
اين كامپوننت، سازوكار مشتركي را براي دسترسي به بسياري از كنترل‌كننده‌هاي بازي مانند دسته بازي، گيم‌پد، صفحه كليد و ماوس فراهم مي‌آورد. مهم‌ترين تغييري كه هنگام عرضه DirectX8 در DirectInput ايجاد شد، آمدنaction map بود. action map از توابعي مانند راندن يك وسيله يا شليك يك گلوله (كه به‌وسيله دستگاه‌هاي ورودي ايجاد مي‌شود) استفاده مي‌كند. زماني كه يك سخت‌افزار ورودي مانند دسته بازي را مي‌خريد، معمولا ‌ًaction mapنيز براي بسياري از انواع رايج بازي‌ها مانند شبيه‌ساز پرواز، تيراندازي اول شخص و بازي‌هاي مسابقه‌اي در آن پياده‌سازي شده است. 

7- DirectPlay 
اين كامپوننت امكان بازي چند نفر را در بازي‌هاي چندنفره فراهم مي‌آورد، دسترسي به سرويس‌هاي ارتباطي را آسان مي‌سازد و راهي را براي بازي‌ها فراهم مي‌كند تا مستقل از پروتكل يا نوع سرويس آنلا‌ين با يكديگر در ارتباط باشند. همچنين از پروتكل‌هاي ارتباطي مطمئن پشتيباني‌مي‌كند تا مانع از گم شدن داده‌هاي مهم بازي روي شبكه شود. در واقع DirectPlay به صورت لا‌يه‌اي است كه روي پروتكل‌هاي معمول شبكه مانند IPX ،TCP/IP و ... قرار دارد. 

در واقع يك session يا جلسه در DirectPlay يك كانال ارتباطي بين چندين كامپيوتر است. يك برنامه كاربردي پيش از آن‌كه بتواند با سيستم‌هاي ديگر ارتباط برقرار كند، بايد در يك Session يا جلسه باشد. هر جلسه تنها يك ميزبان دارد و آن برنامه كاربردي‌اي است كه آن جلسه را ايجاد كرده‌است. تنها ميزبان مي‌تواند ويژگي‌هاي يك Session را تغيير دهد. 

DirectX 9.0 
اين كامپوننت، آخرين نسخه DirectX تا پيش از عرضه رسمي ويندوز ويستا است. مهم‌ترين چيزي كه همراه DirectX 9.0 عرضه شد، High-Level Shader Language) HLSL) است. زبان HLSL جايگزين زبان اسمبلي براي نوشتن pixel shaderها و vertex shaderها در DirectX است. پيش از ارائه DirectX 9.0 توسعه‌دهندگان بازي بايدshader‌ها را با استفاده از يك زبان اسمبلي سطح پايين توسعه مي‌دادند. HLSL با فراهم‌آوردن يك محيط برنامه‌نويسي توسعه‌دهنده ساده، توسعه همه بخش‌هاي نرم‌افزار مانند انيميشن و برنامه‌نويسي افكت‌ها را آسان مي‌كند. 

HLSL با همه پردازشگرهاي گرافيكي (GPU) سازگار با DirectX كار مي‌كند و به توسعه‌دهندگان امكان مي‌دهد افكت‌هاي بصري را روي گستره وسيع‌تري از پلتفرم‌ها ايجاد كنند؛ بدون اين‌كه نياز داشته باشند به جزئيات سخت‌افزار گرافيكي توجه كنند. 

DirectX 9.0 روي ويندوز 95 نصب نمي‌شود. چون بازي‌هايي كه به DirectX 9.0 نياز دارند، به كامپيوترهاي جديدتر و قوي‌تري هم نياز دارند كه ويندوز 98 يا نسخه‌هاي جديدتر روي آن‌ها نصب مي‌شود. تاكنون نسخه‌هاي a ،b و c از DirectX 9.0 ارائه شده است. هر نسخه جديدتر از DirectX داراي امنيت، كارايي و سيستم رفع خطاي بهتري است. 

DirectX 10
دوستداران بازي بايد خوشحال باشند از اين‌كه بدانند شركت مايكروسافت DirectX را نيز توليد كرده است و همراه پيش توزيع Direct3D 10 عرضه خواهد شد. همچنين نرم‌افزارMicrosoft Windows Game Explorer نيز عرضه شده‌ كه به برنامه‌نويسان و توسعه‌دهندگان امكان مي‌دهد امكانات بروزكردن خودكار (auto-updating) را به بازي‌هايشان بيفزايند. مايكروسافت مي‌خواهد DirectX 9.0 و DirectX 10 را روي ويندوز ويستا عرضه كند. به گفته Rodolph Balaz از برنامه‌نويسان توسعه‌‌دهنده Direct3D و OpenGL در مايكروسافت، DirectX 10 تنها با سيستم‌عامل‌هاي جديد كار خواهد كرد و در حال حاضر مايكروسافت، برنامه‌اي براي پشتيباني ويندوز اكس‌پي از آن ندارد. 

تا زمان نوشته شدن اين مقاله هنوز نسخه رسمي ويندوز ويستا عرضه نشده است. ولي به نظر مي‌آيد اين ويندوز، هم از DirectX 10 و هم از DirectX 9.0 پشتيباني خواهد كرد. 

SGL OpenGL
شركت سيليكون گرافيكس(SGI ،OpenGL) را با هدف ساخت يك API براي توسعه برنامه‌هاي گرافيكي دوبعدي و سه بعدي عرضه‌كرده‌است. پيش از ساخته شدن APIهاي گرافيكي مانند OpenGL و DirectX، بسياري از توليدكنندگان سخت‌افزار، كتابخانه‌هاي گرافيكي مختلف و متفاوتي داشتند. به همين دليل پشتيباني از نسخه‌هاي مختلف نرم‌افزارهايشان روي پلتفرم‌هاي سخت‌افزاري مختلف هزينه‌بر و انتقال يك برنامه كاربردي از يك پلتفرم سخت‌افزاري به پلتفرم سخت‌افزاري ديگر بسيار وقت‌گير و سخت بود. 

بنابراين SGI نمونه برنامه‌اي را توليد كرد كه توليدكنندگان سخت‌افزار بايد از آن براي توسعه درايورهاي OpenGL در سخت‌افزارهايشان استفاده كنند. اين برنامه به صورت اپن‌سورس ارائه شده‌است. ولي سازندگان اين سخت‌افزارها مي‌توانند قابليت‌هاي گوناگوني را برپايه OpenGL در سخت‌افزارهايشان ايجاد كنند. تصميم‌گيري درباره ايجاد تغييرات در OpenGL را كنسرسيوم ARB اتخاذ مي‌كند.

اين كنسرسيوم شامل اعضاي مهمي همچون اپل، اينتل، آي‌بي‌ام، سان، ATI، دل، nVIDIA، سيليكون‌گرافيكس و3Dlabs است و از سوي شركت‌هاي معتبر ديگري مانند متراكس، S3 ،Xi و Quantum 3D حمايت مي‌شود. توسعه‌دهندگان نرم‌افزار براي استفاده از OpenGL در نرم‌افزارهايشان نيازي به اخذ مجوز ندارند. ولي توليدكنندگان سخت‌افزار براي پياده‌سازي سخت‌افزاري OpenGL نيازمند اخذ مجوز از SGI هستند.

OpenGL چيست؟ 
در اوايل پيدايش OpenGL، از اين API در كارهاي صنعتي، طراحي وسايل داخلي، مكانيكي و نيز در آناليزهاي علمي و آماري استفاده مي‌شد. 

در سال 1996، نويسندگان و توسعه‌دهندگان بازي‌هاي كامپيوتري از نسخه ويندوزي OpenGL براي ساخت بازي‌هاي كامپيوتري استفاده كردند. OpenGL براي پشتيباني از گستره وسيعي از تكنيك‌هاي رندركردن گرافيكي پيشرفته طراحي شده است كه مي‌توان پاره‌اي از آن‌ها را به اين‌صورت نام برد: 

نورپردازي: قابليت تحليل ميزان رنگ هنگام تابش مدل‌هاي متفاوت نور به يك سطح از يك يا چند منبع نور مختلف.

سايه‌سازي نرم: قابليت تحليل افكت‌هاي سايه هنگام تابش نور به يك زاويه و ايجاد اختلا‌ف نور خفيف در مقابل آن سطح (مانند نور كمي كه هنگام تابش آفتاب به يك صخره يخي در اطراف آن ايجاد مي‌شود). 

حركت محو ومدل‌سازي: توانايي تغيير مكان و اندازه پرسپكتيو يك شي در فضاي سه بعدي. 
مجموعه امكانات OpenGL شبيه Direct3D است. ولي API سطح پايين‌تر آن (نزديك‌تر به سطح سخت‌افزار) باعث مي‌شود كنترل خوبي روي عناصر اصلي ايجاد صحنه‌هاي سه بعدي مانند اطلا‌عات سه‌ضلعي‌ها كه سلول‌هاي تشكيل‌دهنده يك مدل سه بعدي هستند داشته باشد. 

دو سطح پشتيباني از شتاب‌دهندگي سخت‌افزاري براي OpenGL وجود دارد: installing client driver) ICDs) كه به نوردهي ايجاد تغيير و رستركردن (تبديل يك فريم سه بعدي چند ضلعي ذخيره شده درframe buffer به يك تصوير كامل با بافت‌ها و نشانه‌هاي عمق و نور) شتاب مي‌دهد و mini client server) MCs) كه از رستركردن پشتيباني مي‌كند. 

OpenGL 1.4 و OpenGL 1.5 به‌ترتيب در تابستان 2002 و 2003 معرفي شدند كه هر يك امكانات و كاربردهاي بيشتري از نسخه‌هاي پيش از خود داشتند. بزرگ‌ترين آن‌ها OpenGL Shading Language بود؛ زباني ويژه برنامه‌نويسي vertex-shader و pixel-shader كه در صورت نياز به OpenGL الصاق مي‌شد. OpenGLShading Language زباني شد كه به سرعت در سطح گسترده‌اي مورد پشتيباني يونيكس، ويندوز، لينوكس و ديگر سيستم‌عامل‌ها براي توسعه‌دهنده گرافيك‌هاي تعاملي و برنامه‌هاي كاربردي ترسيمي قرار گرفت. 

OpenGL 2.0 
OpenGL 2.0 آخرين نسخه عرضه شده تا اوايل سال 2006 ميلا‌دي است. OpenGL Shader Language همراه با اين نسخه عرضه شده و بر پايه استاندارد ANSYC طراحي شده است. برخي قابليت‌هاي تازه اين نسخه عبارتند از: 

- سايه‌زني قابل برنامه‌ريزي به‌وسيله OpenGL Shader Language و APIهاي آن. قدرت ايجاد Shader و برنامه‌نويسي اشيا، بخش ديگري از تغييرات ايجاد شده در اين نسخه است.

- رندر چندگانه كه به shaderهاي قابل برنامه‌نويسي امكان مي‌دهد در بافرهاي خروجي چندگانه در يك گذر مقادير مختلفي بنويسند. 

- بافت‌هاي دو طرفه، با قابليت تعريف كاربرد آن بافت براي سطح جلو و پشت يك مدل اوليه كه كيفيت حجم سايه و كارايي الگويم‌هاي رندر هندسي اشياي سخت را ارتقا مي‌دهد. 

- Spriteهاي نقطه كه مختصات بافت يك نقطه را با مختصات بافت قرار داده شده در مقابل آن نقطه جابه‌جا مي‌كنند و رسم نقاط را در بافت‌هاي طراحي شده در كامپيوترهاي معمولي نيز ممكن مي‌سازند.

- بافت‌هاي Non-power-of-two كه براي همه انواع بافت‌ كاربرد دارد كه در نتيجه از بافت‌هاي چهارگوش پشتيباني مي‌نمايد و درعمل حافظه كمتري اشغال مي‌كند. 

OpenAL 
OpenAL، يك API ديگر است كه براي ايجاد و مديريت صداهاي سه بعدي در بازي‌هاي كامپيوتري و ديگر انواع نرم‌افزارها به صورت يك پروژه مشترك ميان شركت Loki Software و Creative ساخته شده است. 

كتابخانه اين API مجموعه‌اي از صداهاي قابل حركت در فضاي سه‌بعدي را مدل‌سازي مي‌كند. عناصر اصلي OpenAL شامل يك شنونده، يك منبع و يك بافر است. ممكن است تعداد زيادي بافر وجودداشته باشد كه شامل داده‌هاي صوتي هستند. هر بافر مي‌تواند به يك يا چند منبع ضميمه شود. هميشه يك عنصر شنونده (براي محتواي صوتي) وجود دارد كه موقعيت مكاني منبع صوتي كه صداي آن شنيده مي‌شود را نشان مي‌دهد. OpenAL در موتورهاي گرافيكي Epic Games Unreal نيز براي ساخت افكت‌هاي صوتي به كار مي‌رود. 

OpenGL Performer 
OpenGL Performer، رابط برنامه‌نويسي قدرتمند و كاملي است كه توسعه‌دهندگان براي شبيه‌سازي بصري از آن استفاده مي‌كنند. ابزارهاي موجود در آن، توسعه برنامه‌هاي شبيه‌سازي بصري، طراحي بر اساس شبيه‌سازي، واقعيت مجازي، نرم‌افزارهاي علمي، سرگرمي‌هاي تعاملي، برنامه‌هاي ويديويي و طراحي با كامپيوتر را آسان مي‌كند. اين رابط برنامه‌نويسي به برنامه‌نويسان امكان مي‌دهد از قابليت‌هاي سيستم به صورت بهينه استفاده كنند. آخرين نسخه اين نرم‌افزار OpenGL Performer 3.2 است. 

OpenGL Volumizer
OpenGL Volumizer، يك API گرافيكي است كه در بخش‌هاي انرژي، توليد، داروسازي و تجارت كاربرد دارد. اين API براي انجام كارهاي تعاملي با كيفيت بالا‌ و بصري نمودن و شبيه‌سازي يك محيط با استفاده از مجموعه بزرگي از داده‌هاي حجمي (داده‌هايي كه مختصات يك شي در فضاي سه بعدي را نشان مي‌دهند) طراحي شده است. براي نمونه در نرم‌افزارهاي پزشكي براي شبيه‌سازي وضعيت بخش خاصي از بدن، از اين نرم‌افزار استفاده مي‌شود. OpenGL Volumizer آخرين نسخه اين API تا اوايل سال 2006 ميلا‌دي است كه بر پايه كتابخانه گرافيكي استانداردOpenGL ساخته شده و شامل رابط كلا‌س ++C و قابل‌استفاده در سيستم‌عامل‌هاي ويندوز و لينوكس 32 بيتي و 64 ‌بيتي است. 

OpenGL Multipipe SDK 
OpenGL Multipipe SDK يك لا‌يه API است كه مديريت برنامه‌هاي گرافيكي را در زير سيستم‌ها و ساختارهاي گرافيكي چندگانه آسان مي‌كند. برنامه‌هاي كاربردي نوشته شده برپايه اين API به نرمي و رواني، هم روي سيستم‌هاي روميزي تك پردازنده‌اي و هم روي سيستم‌هاي چند پردازنده‌اي با سيستم‌هاي گرافيكي قدرتمند اجرا مي‌شوند. 

نتيجه‌گيري‌
همان‌گونه كه بيان شد ارتباط بين برنامه‌ها و سخت‌افزاري كه آن‌را اجرا مي‌كند برعهده API است. سازندگان بزرگ نرم‌افزار و سخت‌افزار API خاصي را براي برنامه‌هاي مالتي‌مديا آماده كرده‌اند كه مطرح ترين آن‌ها DirectX و OpenGL هستند.

برنامه های DirectX در دو حالت اجرا میشند:
1-حالت تمام صفحه (Full Screen Mode) 
2-حالت پنجره ای (Windowed Mode)

برنامه امروز در حالت Full Screen اجرا می شود.VB رو اجرا کنید و یه پروژه نوع استاندارد ایجاد کنید.
برای این که بتوانیم از توابع اشیای DirectX استفاده کنیم باید کتابخانه Type Library رو به پروژه اضافه کنیم.
برای این کار بر روی منوی Project کلیک و References رو انتخاب کنید. در پنجره باز شده و در لیست موجود DirectX 7.0 for Visual Basic Library Type را تیک بذارید و OK کنید.

حالا برای اینکه ما بتوانیم از DirectX استفاده کنیم باید یک شیئ از نوع DirectX7 تعریف کنیم. پس در قسمت General فرم یک شیئ از این نوع تعریف کنید.
Dim DX As New DirectX7

اشیاء دیگری که تعریف خواهیم کرد این ها هستند:

1-یک شیئ از نوع DirectDraw7

این همون شیئی که به ما کمک میکنه که سطوح رو ایجاد کنیم:

Dim DD As DirectDraw7

2- 2 شیئ از نوع DirectDrawSurface7

این اشیاء سطوحی هستند که ما شکل ها، متون و ... رو بر روی اونها نگارش می کنیم(تخته سیاه)

Dim Primary As DirectDrawSurface7 ‘سطح اصلی
Dim Backbuffer As DirectDrawSurface7 ‘ پشت صحنه

یک متغیر عمومی از نوع Boolean هم تعریف می کنیم. این متغیر مشخص می کنه که تا چه زمانی برنامه باید اجرا بشه:

Dim EndPro As Boolean

حالا ادامه میدیم.

طریقه کار به این صورت که اول ما شیئ DD رو مقداردهی میکنیم. یعنی در حقیقت به DirectX7 میگیم که شیئ DD رو برای ما ایجاد کنه. پس در ادامه (Form_Load) بنویسید:

Set DD = DX.DirectDrawCreate ("")

حالا باید به شیئ DD که از نوع DirectDraw7 هست بگیم که ما میخوایم از کدوم فرم برنامه استفاده کنیم. من فرض کردم که فرم برنامه Form1 هست.همچنین باید به کامپیوتر بفهمونیم که میخوایم برنامه تمام صفحه باشه یا نه. برای اینکار از متد SetCooperativeLevel شیئ DD استفاده می کنیم:

DD.SetCooperativeLevel Form1.hWnd, DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE

حالا باید رزولوشن صفحه رو تغییر بدیم. فرض کنیم که سیستم شما از حالت 640 * 480 پشتیبانی می کنه. برای اینکار از متد SetDisplayMode شیئ DD استفاده می کنیم:

DD.SetDisplayMode 640, 480, 16, 0, DDSDM_DEFAULT

آرگومان اول عرض، آرگومان دوم Height و آرگومان سوم عمق بیت حالت رو نشون میده.اون یکی ها هم ref و Mode هستند

حالا میخوایم سطوح رو مقداردهی کنیم. کدهای زیر رو به پروژه خود بیفزایید:

Dim ddsd As DDSURFACEDESC2
ddsd.lFlags = DDSD_BACKBUFFERCOUNT Or DDSD_CAPS
ddsd.lBackBufferCount = 1
ddsd.ddscaps.lCaps = DDSCAPS_COMPLEX Or DDSCAPS_FLIP Or DDSCAPS_PRIMARYSURFACE Or DDSCAPS_VIDEOMEMORY

برای اینکه بتونید یه سطح رو ایجاد کنید باید یه شیئ از نوع DDSURFACEDESC2 رو به ان وابسته کنیم.

حالا سطح اصلی (Primary) خودمون رو ایجاد کنیم. این سطح همون سطحی است که کاربر میبینه. (اینکه چه جوری کامپایلر میفهمه که این همون سطح هست برمیگرده به خصوصیات شیئ ddsd از نوع DDSURFACEDESC که بالا مقداردهی کردیم و این شیئ مشخص میکنه که Primary تخته سیاه باشه). با استفاده از متد CreateSurface شیئ DD این سطح رو ایجاد می کنیم. آرگومان این تابع همون شیئ بالاییه) داریم:

Set Primary = DD.CreateSurface(ddsd)

حالا باید سطح BackBuffer رو مقداردهی کنیم. ولی شاید بپرسید ما که Primary رو داریم دیگه این BackBuffer برای چیه؟ باید بگم برای اینکه از پرپر زدن صفحه نمایش جلوگیری کنیم، ما بجای اینکه همه چیز رو مستقیما روی سطح Primary رسم کنیم، میایم و اول روی سطح (BackBuffer) که متصل به Primary هستش رسم می کنیم و صحنه آماده رو منتقل می کنیم به Primary (در حقیقت میتونیم بگیم که BackBuffer چرک نویس ما هست).

پس حالا ما سطح BackBuffer رو متصل به سطح Primary ایجاد می کنیم. داریم:

Dim ddscaps As DDSCAPS2
ddscaps.lCaps = DDSCAPS_BACKBUFFER Or DDSCAPS_VIDEOMEMORY
Set Backbuffer = Primary.GetAttachedSurface(ddscaps)

حالا همه چی آماده است.

در ضمن فکر میکنم همه با نوع داده RECT آشنایی داشته باشند (اگه کسی آشنایی نداره در قسمت نظرات بگه تا من اونو هم توضیح بدم). در دایرکت ایکس برای اینکه بخوایم یه قسمتی از صفحه رو مشخص کنیم از این نوع داده استفاده می کنیم. یه متغیر هم از این نوع تعریف می کنیم تا کل صفحه رو مشخص کنیم. (برای رنگ آمیزی کل سطح و ...) توجه داشته باشید که این نوع داده در کتابخانه DirectX موجود هست و شما نیازی ندارید که مثل برنامه های دیگه این نوع رو تعریف کنید :

Dim rec As RECT
rec.Bottom = 480
rec.Left = 0
rec.Right = 640
rec.Top = 0

اینو به یاد داشته باشید که ما در برنامه هایی که با دارکت ایکس می نویسیم. کل عملیات رو در قالب یه حلقه (معمولا حلقه Do) انجام میدیم. به این صورت که پشت سر هم به طور مداوم صحنه های خودمون رو بر روی سطح ترسیم می کنیم و به Primary منتقل می کنیم. پس در پروژه خویشتن ( و در همان Form_Load، یعنی ادامه کدهای قبلی) بنویسید:

Do While EndPro=False

Backbuffer.BltColorFill rec, 0 ‘پاک کردن صفحه

Backbuffer.SetForeColor RGB(256, 0, 0) ‘ تنظیم رنگ ترسیم

Backbuffer.DrawText 300, 250, “Hello World”, False ‘درج متن

DoEvents ‘توضیح در پایین

Primary.Flip Nothing, DDFLIP_WAIT ‘ انتقال از چرک نویس به پاک نویس

Loop

حالا ببینیم که چیکار کردیم. تا زمانی که مقدار متغیر EndPro نادرست است این عملیات رو انجام میدیم:

برای پاک کردن صفحه هر بار صفحه رو با رنگ سیاه پر میکنیم. متد BltColorFill سطح رو به روش بلیت پر میکنه. یعنی این که در حافظه مقادیر هر پیکسل رو برابر رنگی که بهش میدیم قرار میده(در اینجا این رنگ رو برابر 0 که همون سیاه هست قرار دادیم).

با استفاده از متد SetForeColor رنگ تمام ترسیماتی که انجام میدیم رو عوض می کنیم.(به اصطلاح ForeColor سطح رو تغییر میدیم.)

با استفاده از متد DrawText متن مورد نظرمون رو بر روی صفحه حک می کنیم. دو آرگومان اول مختصات x و y محل درج متن رو مشخص می کنند.

مـــــــهـــــــم : وقتی ما پشت سر هم و بدون وقفه یه کاری رو انجام میدیم، برنامه دیگه چیز دیگه ای رو پردازش نمی کنه. بنابراین ما با این عبارت(DoEvents) به کامپایلر میگیم در هر بار انجام دستورات حلقه، دستورات دیگه ای مانند فشرده شدن کلید، کلیک ماوس و ... رو هم پردازش کنیم. اگه خیلی کنجکاو هستید، بعد از این که پروژه تون رو Save کردید یه بار برنامه رو بدون DoEvents اجرا کنید

حالا صحنه ما آماده است پس اونو میذاریمش جلوی چشم کاربر. این کار با استفاده از متد Flip سطح Primary انجام میشه. (درمورد فلیپ بعدا اگه عمری باقی باشه توضیح میدم.)

هنگامی که متغیر EndPro مقدار Trueبگیره(هنگامی که کاربر قصد خروج دارد)، حلقه شکسته میشه و ما باید برنامه رو به پایان ببریم. پس حافظه ای که به سطوح و اشیاء دیگر اختصاص داده ایم رو آزاد میکنیم:

Set DD = Nothing
Set Primary = Nothing
Set Backbuffer = Nothing
Set DX = Nothing
End

در اینجا Form_Load به پایان میرسه. حالا فقط یه کار مونده. اون هم اینه کا وقتی کاربر کلید Esc رو فشار میده باید برنامه به پایان برسه، یعنی مقدار متغیر EndPro برابر True بشه. پس این خطوط کد رو به پروژه تون اضافه کنید:

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 27 Then EndPro=True
End Sub

حالا برنامه رو اجرا کنید

تمرین:
1-برنامه را طوری تغییر دهید که به جای عبارت Hello World نام خودتان را نمایش دهد.
2-برنامه را طوری تغییر دهید که به جای عبارت Hello World ، زمان سیستم را نمایش دهد.
3-کاری کنید که عبارت Hello World در روی صفحه به سمت چپ (یا راست حرکت کند)


DirectX 10 و اهمیت آن در صنعت کامپیوتر های شخصی 

توضیح : این گفتگو در تاریخ 19 مهرماه در سایت BootDaily منتشر شده است. در این مصاحبه پرسش ها توسط BD (کوتاه شده عبارت Boot Daily) و پاسخ ها با نام Chris (مدیر بخش گسترش و بازاریابی مایکروسافت) مشخص شده اند. همچنین منظور از DX10 در این مصاحبه DirectX 10 می باشد.

BD : لطفا اهمیت DX10 برای دوست داران بازی ها را در یک جمله توضیح دهید.

Chris : ما در مایکروسافت DirectX 10 را به عنوان بلند ترین جهش در کیفیت و کارایی گرافیک در صنعت کامپیوتر های شخصی از زمان پیدایش DirectX که به زمان ویندوز 95، و تحولی در زمینه بازی های کامپیوتری و تکنولوژی مربوط به آن می دانیم.

BD : و اهمیت آن برای کاربران عادی؟

Chris : بله، DirectX 10 بالاترین کیفیت و کارایی گرافیکی را در پلاتفرم ویندوز را به همراه خواهد داشت که نتیجه آن تجربه ای باورنکردنی و دور از ذهن برای کاربران عادی خواهد بود.

BD : این یک حقیقت است که تعداد زیادی از بازی های معروف و پرطرفدار درحال حاظر بر پایه موتور گرافیکی Doom3 که از OpenGL بهره می گیرد ساخته می شوند. به نظر شما DX10 چه مزیت هایی نسبت به OpenGL برای تولید کنندگان بازی های کامپیوتری به ارمغان می آورد؟

Chris : همانطور که می دانید، ما DirectX 10 را برای ویندوز ویستا و با هدف ارایه دادن یک تجربه باورنکردنی از جزئیات گرافیکی به کاربران و بازیکنان ، تماما از پایه و از صفر ساخته ایم. این نسخه از DirectX نسب به نسخه های قبلی دارای بازده به مراتب بیشتر و در عین حال با ضریب اطمینان و پایداری بیشتر خواهد بود. DirectX 10 به لطف Shader Model 4.0 به طور فوق العاده ای کیفیت و جزئیات باورنکردنی را در اختیار توسعه دهندگان و نهایتا کاربران خواهد گذاشت که از آن جمله توانایی بکارگیری محیط های پیچیده گرافیکی و ترسیم چهره ها به صورت بسیار طبیعی و توانایی نمایش تعداد دلخواه از آیتم ها در صحنه می باشد.

اشاره کردید که بازی های معروف و پرطرفدار بر اساس موتور گرافیکی Doom3 و OpenGL ساخته می شوند، اما به عقیده من تعداد بازی هایی که از DirectX استفاده می کنند به مراتب بیشتر و حتی زیبا تر هستند. بازی هایی زیادی هستند که بر اساس موتور های گرافیکی Unreal و Source و با استفاده از DirectX ساخته می شوند. حتی ID (منظور شرکت ID Software سازنده سری بازی های Doom و Quake است-م) نیز برای منطبق ساختن بازی های خود با کنسول های Xbox و Xbox360 آنها را به DirectX تبدیل می کند.

با این حال، تمامی برنامه هایی که از واسط گرافیکی OpenGL استفاده می کنند قابلیت اجرا در ویندوز ویستا را به شرط پشتیبانی درایور گرافیک و استفاده از وصله (Patch) مناسب، خواهند داشت. به همین خاطر سازندگان و فروشندگان قطعات سخت افزاری ملزم به ارایه ICD یا Installable Client Drivers که امکان استفاده از شتابدهنده گرافیکی را برای پردازش دستورات OpenGL را خواهد داد، هستند

BD : چرا این نسخه از DX10 تنها قابل استفاده در ویندوز ویستا است؟ آیا این نوعی اجبار کاربران برای خرید و ارتقا به ویندوز ویستا نیست؟

DirectX 10 : Chris نیاز به امکانات مشخصی جهت بهره گیری کامل از سخت افزار گرافیکی سیستم دارد که این امکانات و خصیصه ها تنها در سیستم عامل ویندوز ویستا موجود است. ما یک هدف بزرگ را برای دراختیار گذاشتن تجربه گرافیکی جدید به کاربران در نظر گرفته ایم و همانطور که قبلا گفتم، DirectX 10 کاملا از پایه و بدون استفاده از نسخه های قبلی این واسط گرافیکی ساخته شده است و بنابر این هیچگونه سازگاری با نسخه های قبلی از سیستم عامل ویندوز ندارد.

DirectX 10 برپایه مدل جدید درایور تصویر ویندوز ویستا (Windows Vista Display Driver Model یا WDDM) که معرف عصر جدیدی در قابلیت های گرافیکی و افزایش پایداری و ضریب اطمینان درنظر گرفته شده، طراحی شده است. در عین حال ما با انجام تغییراتی در معماری مدل درایور ها سعی در آسان سازی و افزایش پایداری و همچنین سازگاری بیشتر تراشه های گرافیکی با مجموعه دستورات هوش مصنوعی و محاسبات فیزیکی (جدا از تراشه های محاسب فیزیکی) انجام داده ایم که مجموعه این دلایل برای ارایه نشدن این نسخه از DirectX جهت سیستم عامل های قبلی مایکروسافت از جمله ویندوز XP متقاعد کننده به نظر می رسد.

BD : به غیر از رشته های کوتاه تر (Shorter Program Strings)، مزیت اصلی Shader Model 4.0 نسبت به نسخه 3.0 آن برای توسعه دهندگان بازی های کامپیوتری چست؟

Shader Model 4.0 : Chris به توسعه دهندکان اینگونه نرم افزار ها اجازه انجام محاسبات پیچیده بیشتری را در تراشه های گرافیکی (GPU) می دهد. این عمل ضمن کاهش بار پردازش از پردازنده سیستم را که باعث عدم بهره گیری از قدرت کامل تراشه گرافیکی می شود، اجازه انجام محاسبات سنگین مربوط به هوش مصنوعی و نیز افزایش تعداد آیتم ها را در صحنه در اختیار توسعه دهندگان قرار خواهد داد.

در عین حال DirectX 10 به همراه Shader Model 4.0 به لطف پشتیبانی از سایه زن های متحد (Unifyed Shaders) انعطاف پذیری و خلاقیت بسیار بیشتری را در اینگونه توسعه دهندگان قرار خواهد داد.

BD : شرکت های ATI و nVIDIA هردو درحال طراحی و ساخت تراشه های گرافیکی سازگار با DX10 هستند. به نظر شما این تراشه های گرافیکی در مقایسه با کنسول های بازی Xbox 360 و PS3 چگونه عمل خواهد کرد؟

Chris : این موضوع و تلااش این دو شرکت در مورد DirectX 10 بسیار هیجان انگیز است. اما بهتر است این سوال را از خود آنها بپرسید!

BD : به غیر از برتری های DX10 در مورد بازی های کامپیوتری، این نسخه چه نقشی را در برنامه های کاربردی آینده بازی خواهد نمود؟

Chriss : کلا DirectX فراتر از صرفا یک واسط و مجموعه دستورها برای بازی های کامپیوتری است. در گذشته نیز بسیاری از برنامه های کاربردی از CAD/CAM و 3DStudio گرفته تا برنامه های پزشکی و تصویر برداری نیز از مزایای DirectX بهره گرفته اند. با این حال DirectX 10 باز هم نسبت به نسخه های قبلی قطعا امکانات بسیار مناسب تری را در اختیار اینگونه برنامه ها خواهد گذاشت. به یک نکته دقت کنید! ویندوز ویستا از DirectX 10 به عنوان یک مولفه گرافیکی استفاده می کند - پس ویندوز ویستا هم خود یک برنامه کاربردی استفاده کننده از DirectX 10 محسوب می شود!

BD : نحوه تعامل DX10 با کاربرانی که از سخت افزار DX10 استفاده نمی کنند چگونه خواهد بود؟

DirectX 10 : Chriss و ویندوز ویستا کاملا با تمامی برنامه ها و بازی های منطبق با نسخه های قدیمی تر DirectX سازگار هستند. کسانی که در زمان انتشار ویندوز ویستا، سخت افزار منطبق بر DirectX 10 را در اختیار ندارند و یا تهیه نکرده اند، هنوز هم قابلیت اجرای بازی ها و برنامه های برپایه DirectX 10 را خواهند داشت. DirecrX 9 هم در ویندوز ویستا برای این گروه از کاربران در نظر گرفته شده است. با این حال جالب است بدانید کاربرانی که با استفاده از سخت افزار منطبق بر DirectX 10 بازی های DirectX 9 را اجرا کنند شاهد افزایش کیفیت و بازده آن خواهند بود!

درعین حال توسعه دهندگان نیز می توانند با خیالی آسوده به تولید بازی ها و نرم افزار های بر اساس DirectX 9 برای ویندوز ویستا بپردازند.

BD : آیا به نظر شما DX10 نهایت گرافیک در کامپیوتر خواهد بود؟ یعنی با فرض در اختیار داشتن سخت افزار مناسب آیا شاهد تصاویر منطبق بر واقعیت با سرعت نمایش مناسب خواهیم بود؟

Chris : ما به DirectX 10 به عنوان گام بلندی در زمینه گرافیک کامپیوتری می نگریم. مطمنا این نسخه از DirectX تجربه جدید را در اختیار کاربران خواهد گذاشت و با اجازه دادن به توسعه دهندگان برای آشنایی با قابلیت های DirectX 10 این تجارب بهتر و بهتر نیز خواهند شد. اما ما همچنین عقیده داریم که هنوز هم موارد زیادی در این مورد قابل دستیابی هستند و بدست آوردن آنها نیز به زمان بیشتری نیاز دارد. گرافیک در ویندوز و DirectX 10 هنوز هم در راه توسعه و تکامل هستند.

BD : آیا شما در این لحظه در مورد تراشه های DirectX 10 شرکت های ATI و nVIDIA نظری دارید؟ کدام یک را برای خود انتخاب می کنید؟

Chris : نه! ما بدون همکاران خود در جای فعلی قرار نداشتیم! مایکروسافت با تمامی شرکت های فعال در زمینه گرافیک کامپیوتری همکاری نزدیک و دوستانه ای داشته و دارد. هردوی آنها همکاری های بسیاری در توسعه پلاتفرم ویندوز تا کنون با ما داشته اند. دیدن محصولات آنها برای ویندوز ویتا در فروشگاه های سخت افزاری برای ما جال خواهد بود.

BD : در مورد پیشرفت های صدا در DX10 نیز توضیح دهید. آیا ما میتوانیم با این نسخه صداها را "ببینیم" !؟

Chris : این نسخه از DirectX کماکان روال گذشته را در مورد چگونگی و نحوه تولید صدا ها ( بر پایه XACT cross-platform audio creation tool) را ادامه می دهد. بنابر این برتری عمده ای نسبت به نسخه های قبلی در این نسخه قابل ذکر نیست اما پیشرفت هایی انجام شده است.

BD : ویندوز ویستا چگونه برای اجرای یک بازی یا برنامه با استفاده از DX10 و یا DX9 را با توجه به نوع GPU تصمیم گیری می کند؟

Chris : وقتی روند اجرای یک بازی آغاز می شود، ویندوز ویستا با تشخیص نسخه DirectX به کار رفته در بازی و سخت افزار سیستم، گزینه مناسب را انتخاب خواهد کرد.

BD : گفته می شود که DirectX10 از Geometry Shaders (سایه زن هندسی) استفاده می کند. این قابلیت تا چه حد به روند انجام و تشکیل اشکال هندسی کمک خواهد کرد؟

Geometry Shader : Chris دقیقا در بین سایه زن های پیکسل و راس (Vertex and Pixel) در خط لوله پردازش قرار دارد. می تواند از رئوس و مثلث های ایجاد شده در ترسیم اشکال بعدی، بدون نیاز به پردازش مجدد، استفاده کند. سایه زن هندسی کارهای دیگری نیز انجام میدهد : تقویت تعداد مثلث ها با انتخاب یک یا چند مثلث از قبل پردازش شده و تکرار آنها بدون نیاز به پردازش مجدد، و یا تشکیل مثلث های جدید با ترکیب مثلث های دردسترس، تولید نقطه ها و خط های جدید و یا با استفاده از مثلث های ازقبل پردازش شده، و یا تولید پیکسل های پخش شده (جدا جدا).

انتخاب یک نقطه، تولید یک سری مثلث در اطراف آن و گسترش آن تا تشکیل یک تصویر قابل درک (Sprite) و یا تجزیه یک مثلث به تعداد کوچکتری مثلث و گسترش آن. بیرون انداختن یک راس از مثلث از مجموع مثلث ها و تبدیل آن به یک حجم یا یک چهار ضلعی.

بهترین نقطه در DirectX ترکیب تمامی انواع Shader Model ها در Shader Model 4.0 است که به توسعه دهندگان اجازه خواهد داد انواع Vertex، Pixel و Geometry Shaders ها را در یک مدل بیافرینند.

BD : در مورد محاسبات فیزیک (کنش ها و واکنش های محیط در مقابل تعییرات) چطور؟

Chris : ویندوز ویستا از تمامی انواع محاسبات فیزیکی چه به وسیله پردازنده، تراشه گرافیکی یا پردازنده فیزیک جداگانه پشتیبانی خواهد نمود. با اتکا بر DirectX 10 ویندوز ویستا پلاتفرم قدرتمندی برای انجام محاسبات فیزیکی توسط GPU خواهد بود. پشتیبانی از ویژگی چند تراشه گرافیکی SLI و یا CrossFire و توانایی تقسیم وظایف پردازش تصویر و یا محاسبات فیزیکی بین تراشه های گرافیکی موجود در سیستم از جمله امتیازات سیستم عامل ویستا و DirectX 10 می باشد.

BD : با این وجود پشتیبانی از کارت پردازش فیزیک Ageia به عهده ویندوز ویستا خواهد بود؟ و یا ATI و nVIDIA؟

Chris : واضح است که ساده ترین روش پردازش فیزیک، بهره گیری از پردازنده اصلی سیستم است. در ویندوز ویستا تامین درایور های لازم و پشتیبانی تراشه های پردازش فیزیک (مانند Agiea) بر عهده خود سازندگان آنها خواهد بود.

BD : آیا تیم توسعه و بازار یابی شما اقدامی در جهت موجود بودن محتوای مناسبی مانند بازی های کامیوتری، نرم افزار های سازگار و مختص به ویندوز VISTA در هنگام انتشار آن انجام داده است؟

Chris : بله! در زمان انتشار ما پشتیبانی کاملی از تمام نسخه های موجود بازی ها و نرم افزار ها را در ویندوز ویستا شاهد خواهیم بود. در عین حال علاوه بر 10 عنوانی که قبلا برای انتشار همزمان با ویندوز ویستا اعلام شده بود، عناوین مهم و جذاب دیگری نیز برای انتشار همزمان با ویندوز ویستا پیش بینی کرده ایم. مطمنا این عنواین در همان روزهای اول پیشرفت فوق العاده در نسل بعدی بازی های کامپبوتری و امکانات باورنکردنی ویندوز ویستا و DirectX 10 را به نمایش خواهند گذاشت. ضمنا تعداد تعداد زیادی از عنواین فعلی نیز برای ویندوز ویستا و پشتیبانی آن از پردازنده های چند هسته ای بهینه سازی شده اند.

از عناوینی که در هنگام انتشار ویستا برای خرید موجود خواهد بود :

“Alan Wake (Microsoft Game Studios) 
“Age of Conan: Hyborian Adventures” (Eidos) 
“Company of Heroes” (THQ)
“Crysis” (EA-Partners) 
“Flight Simulator X” (Microsoft Game Studios) 
“Halo 2 for Windows Vista” (Microsoft Game Studios) 
“Hellgate: London” (Namco) 
“LEGO Star Wars II: The Original Trilogy” (LucasArts)
“Shadowrun” (Microsoft Game Studios) 
“Zoo Tycoon 2: Marine Mania” (Microsoft Game Studios) 

BD : از اینکه به سوالات ما و تعداد زیادی از کاربران و دوستداران بازی های کامپیوتری پاسخ دادید متشکرم. به امید موفقیت هرچه بیشتر شما. ما مشتاقانه منتظر عرضه ویندوز ویستا و بازی های جذاب DirectX 10 و سخت افزار های ارایه شده توسط nVIDIA و ATI خواهیم بود.
+ نوشته شده در  85/09/25ساعت 15:29  توسط مهدی سعادتی  |  2 نظر


ترفنـــــــــــــــــــــــــــد:

برای اینکه بعد از قرار دادن کنترل هاتون نخواید دوباره فونت تک تک اونها رو تغییر بدهید برای این کار قبل از قرار دادن اونها روی فرم ابتدا فونت فرم رو به فونت مورد نظرتون که من Tahoma رو پیشنهاد میکنم تغییر بدهید و سپس هر کنترلی که روی فرم قرار بدهید با فونت فرم یکی میشود

 

نکتـــــــــــــــــــــــــــــه:

برای حرکت دادن کنترل های رو فرم به صورت دقیق تر و بدون لرزش میتونید این کار رو با کیبرد انجام بدهید که فقط روی کنترل مورد نظر کلیک کنید و سپس کلید کنترل رو پایین نگه دارید و با کلید های مکان نما اون رو جابجا کنید که این کار رو می تونید با انتخاب دسته جمعی کنترل ها هم انجام بدهید

 

نکتـــــــــــــــــــــــــــــه:

برای تغییر اندازه کنترل های روی فرم میتونید ابتدا انها را انتخاب کنید و سپس کلید شیفت رو پایین نگه دارید و با کلید های مکان نما اونها رو تغییر اندازه بدهید

 

نکتـــــــــــــــــــــــــــــه:

بعضی مواقع شما نوشته داخل یک کنترل مثل یک Label رو به فارسی تغییر میدهید که این عبارت به درستی نشان داده نخواهد شد که برای رفع این مشکل باید فونت اون کنترل رو به Tahoma تغییر دهید

 

نکتـــــــــــــــــــــــــــــه:

برای اینکه در پنجره خصوصیت اشیاء سریعتر به خصوصیت مورد نظر پرش کنید میتوانید با نگه داشتن کلید کنترل و شیفت و زدن اولین حرف خصوصیت مورد نظر به ان پرش کنید



نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:






موضوعات مرتبط: آموزش ، ،
برچسب‌ها: